package com.tsx.leetcode.hot100.easy;

/**
 * <a href="https://leetcode.cn/problems/hamming-distance">汉明距离</a>
 * 1. 两个二进制进行异或运算 相同为0 不同为1
 * 2. &运算 拿出最后一位的二进制值 1或0
 * <p>
 * 特性	      异或(^)	按位与(&)
 * 相同位结果	     0	       1
 * 不同位结果	     1         0
 * 与0运算	   不变	       0
 * 与1运算	   取反	     不变
 */
public class Q461HammingDistance {
    public static void main(String[] args) {
        Q461HammingDistance q461HammingDistance = new Q461HammingDistance();
        int res = q461HammingDistance.hammingDistance(4, 1);
        System.out.println("res = " + res);
    }

    public int hammingDistance(int x, int y) {
        int s = x ^ y, ret = 0;
        while (s != 0) {
            ret += s & 1;
            s >>= 1;
        }
        return ret;
    }
}
